Next: Default Coding Systems, Previous: Lisp and Coding Systems, Up: Coding Systems [Contents][Index]
This function selects a coding system for encoding specified text, asking the user to choose if necessary. Normally the specified text is the text in the current buffer between from and to. If from is a string, the string specifies the text to encode, and to is ignored.
If the specified text includes raw bytes (see Text
Representations), select-safe-coding-system
suggests raw-text for its encoding.
If default-coding-system is
non-nil, that is the first coding system to try;
if that can handle the text,
select-safe-coding-system returns that coding
system. It can also be a list of coding systems; then the
function tries each of them one by one. After trying all of
them, it next tries the current buffer’s value of
buffer-file-coding-system (if it is not
undecided), then the default value of
buffer-file-coding-system and finally the
user’s most preferred coding system, which the user can
set using the command prefer-coding-system (see
Recognizing Coding Systems in The GNU Emacs
Manual).
If one of those coding systems can safely encode all the
specified text, select-safe-coding-system
chooses it and returns it. Otherwise, it asks the user to
choose from a list of coding systems which can encode all the
text, and returns the user’s choice.
default-coding-system can also be a list whose
first element is t and whose other elements are coding
systems. Then, if no coding system in the list can handle the
text, select-safe-coding-system queries the user
immediately, without trying any of the three alternatives
described above.
The optional argument accept-default-p, if
non-nil, should be a function to determine
whether a coding system selected without user interaction is
acceptable. select-safe-coding-system calls this
function with one argument, the base coding system of the
selected coding system. If accept-default-p
returns nil,
select-safe-coding-system rejects the silently
selected coding system, and asks the user to select a coding
system from a list of possible candidates.
If the variable
select-safe-coding-system-accept-default-p is
non-nil, it should be a function taking a single
argument. It is used in place of accept-default-p,
overriding any value supplied for this argument.
As a final step, before returning the chosen coding
system, select-safe-coding-system checks whether
that coding system is consistent with what would be selected
if the contents of the region were read from a file. (If not,
this could lead to data corruption in a file subsequently
re-visited and edited.) Normally,
select-safe-coding-system uses
buffer-file-name as the file for this purpose,
but if file is non-nil, it uses that
file instead (this can be relevant for
write-region and similar functions). If it
detects an apparent inconsistency,
select-safe-coding-system queries the user
before selecting the coding system.
Here are two functions you can use to let the user specify a coding system, with completion. See Completion.
This function reads a coding system using the minibuffer, prompting with string prompt, and returns the coding system name as a symbol. If the user enters null input, default specifies which coding system to return. It should be a symbol or a string.
This function reads a coding system using the minibuffer, prompting with string prompt, and returns the coding system name as a symbol. If the user tries to enter null input, it asks the user to try again. See Coding Systems.
Next: Default Coding Systems, Previous: Lisp and Coding Systems, Up: Coding Systems [Contents][Index]